#ifndef STATESPLASH_H
#define STATESPLASH_H

#include <SFML/Graphics.hpp>
#include "SGE/SGE_types.h"
#include "SGE/State.h"

class StateSplash : public SGE::State
{
public:
	/**
	 * SplashState constructor
	 * @param[in] theApp is a pointer to the App class.
	 */
	StateSplash(SGE::App* theApp);

	/**
	 * SplashState deconstructor
	 */
	virtual ~StateSplash(void);

	/**
	 * DoInit is responsible for initializing this State
	 */
	virtual void DoInit(void);

	/**
	 * ReInit is responsible for Reseting this state when the
	 * StateManager::ResetActiveState() method is called.  This way a Game
	 * State can be restarted without unloading and reloading the game assets
	 */
	virtual void ReInit(void);

	/**
	 * HandleEvents is responsible for handling input events for this
	 * State when it is the active State.
	 * @param[in] theEvent to process from the App class Loop method
	 */
	virtual void HandleEvents(sf::Event theEvent);

	/**
	 * Update is responsible for handling all State update needs for this
	 * State when it is the active State.
	 */
	virtual void Update(void);

	/**
	 * Draw is responsible for handling all Drawing needs for this State
	 * when it is the Active State.
	 */
	virtual void Draw(void);

protected:
	/**
	 * Cleanup is responsible for performing any cleanup required before
	 * this State is removed.
	 */
	virtual void Cleanup(void);

private:
	// Variables
	/////////////////////////////////////////////////////////////////////////
	sf::Sprite* mSplashSprite;

};

#endif // STATESPLASH_H
